Operator
Operator abstract classes and abstract methods
Genetic algorithm is designed using template design pattern. Concrete genetic operators are constructed by inheriting the following abstract classes while implementing abstract methods
Select operator abstract class
public abstract class Selection {
protected abstract Chromosome select(Population population);
}
Crossover operator abstract class
public abstract class Crossover {
public abstract ChromosomePair crossover(Chromosome c1,Chromosome c2);
}
Mutation operator abstract class
public abstract class Mutation {
protected abstract Chromosome mutate(Chromosome chromosome);
}
By inheriting abstract classes and implementing specific algorithms, we can achieve algorithm improvements in the following ways. Such as roulette algorithm, two-point crossover, simple mutation.
public class RouletteSelection extends Selection {
@Override
protected Chromosome select(Population population) {
//具体算法实现
}
}
public class TwoPointCrossover<T> extends Crossover {
@Override
public ChromosomePair crossover(Chromosome c1, Chromosome c2) {
//具体算法实现
}
}
public class SimpleMutation extends Mutation {
@Override
protected Chromosome mutate(Chromosome chromosome) {
//具体算法实现
}
}